using UwinEducation.Domain.Entities;
using UwinEducation.Shared.Models;

namespace UwinEducation.Domain.IRepositories
{
    /// <summary>
    /// 学生缴费仓储接口
    /// </summary>
    public interface IStudentPaymentRepository : IRepository<StudentPayment, Guid>
    {
        /// <summary>
        /// 获取学生缴费分页列表
        /// </summary>
        Task<PagedResult<StudentPayment>> GetPagedListAsync(StudentPaymentPageRequest pageRequest);

        /// <summary>
        /// 获取学生缴费详情
        /// </summary>
        Task<StudentPayment> GetDetailsByIdAsync(Guid id);

        /// <summary>
        /// 获取学生的所有缴费记录
        /// </summary>
        Task<List<StudentPayment>> GetByStudentIdAsync(Guid studentId);

        ///// <summary>
        ///// 批量新增学生缴费记录
        ///// </summary>
        //Task AddRangeAsync(List<StudentPayment> payments);


        /// <summary>
        /// 根据学生ID和教师课表组ID获取学生缴费记录
        /// </summary>
        Task<List<StudentPayment>> GetByStudentIdsAndTeacherScheduleGroupIdsAsync(List<Guid> studentIds, List<Guid> teacherScheduleGroupIds);

        /// <summary>
        /// 获取查询对象
        /// </summary>
        IQueryable<StudentPayment> GetQuery();

        /// <summary>
        /// 根据学生ID和教师课表组ID获取学生缴费记录
        /// </summary>
        Task<StudentPayment> GetByStudentAndTeacherScheduleAsync(Guid studentId, Guid teacherScheduleGroupId);

        /// <summary>
        /// 删除学生缴费记录
        /// </summary>

        Task DeleteByStudentIdAndTeacherScheduleIdAsync(Guid studentId, Guid teacherScheduleId);
    }
}